package models

import (
	"time"
	"tuowei.com/cmd/migrate/migration/models"
	common "tuowei.com/common/models"
)

type SysCourseList struct {
	CourseId  int       `json:"course_id" comment:"课程ID"`  // 课程ID
	SerialNum string    `json:"serial_num" comment:"课程编号"` // 课程编号
	Subject   string    `json:"subject" comment:"科目"`      // 科目
	Name      string    `json:"name" comment:"课程名称"`       // 课程名称
	Cover     string    `json:"cover" comment:"封面"`        // 封面
	Price     float64   `json:"price" comment:"价格"`        // 价格
	Sales     int       `json:"sales" comment:"销量"`        // 销量
	Status    int       `json:"status" comment:"状态"`
	Creator   string    `json:"creator" gorm:"index;comment:创建者"`
	CreatedAt time.Time `json:"created_at" gorm:"comment:创建时间"`
}

type SysCourse struct {
	CourseId           int     `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	SerialNum          string  `json:"serial_num" comment:"课程编号" gorm:"<-:create"`             // 课程编号
	Subject            string  `json:"subject" comment:"科目"`                                   // 科目
	Province           string  `json:"province" comment:"适用地区"`                                //适用地区
	Name               string  `json:"name" comment:"课程名称"`                                    // 课程名称
	Cover              string  `json:"cover" comment:"封面"`                                     // 封面
	Price              float64 `json:"price" comment:"价格"`                                     // 价格
	Sales              int     `json:"sales" comment:"销量"`                                     // 销量
	Outline            string  `json:"outline" comment:"大纲" vd:"@:len($)>0; msg:'请上传课程大纲'"`    //大纲
	Introduction       string  `json:"introduction" comment:"课程简介"`                            //课程简介
	AuditionLink       string  `json:"audition_link" gorm:"type:varchar(255);comment:试听链接地址"`  //试听链接地址
	AuditionCourseName string  `json:"audition_course_name" comment:"试听课程名称"`
	LecturerId         int     `json:"lecturer_id" comment:"讲师ID"`
	IsBoutique         int     `json:"is_boutique" gorm:"type:tinyint(1)"`
	IsBindOffline      int     `json:"is_bind_offline" gorm:"tinyint(1);default:0;comment:是否关联面授课程"`
	TermOfValidity     int     `json:"term_of_validity" gorm:"smallint(2);comment:网课有效期"`
	//Lecturer         string     `json:"lecturer" comment:"讲师"`
	//LecturerIntr     string  `json:"lecturer_intr" comment:"讲师简介"`     //讲师简介
	OnlineClassId  int              `json:"online_class_id" comment:"网课班级ID"` //网课班级ID
	OnlineClass    string           `json:"online_class" comment:"网课班级"`      //网课班级
	Contacts       string           `json:"contacts" comment:"班主任联系"`         //班主任联系
	Status         int              `json:"status" comment:"状态"`
	CourseWareJson []CourseWareTree `json:"course_ware_json" gorm:"-"`
	Telephone      string           `json:"telephone" comment:"联系电话"`
	PublicRange    string           `json:"public_range" gorm:"type:varchar(11); comment:公开范围"`
	CourseType     string           `json:"course_type" gorm:"type:varchar(50);comment:课程类型，online，live"` //课程类型
	StartTime      time.Time        `json:"start_time" gorm:"datetime;comment:直播开始时间"`
	EndTime        time.Time        `json:"end_time" gorm:"datetime;comment:直播结束时间"`
	LiveUrl        string           `json:"live_url" gorm:"type:varchar(255);comment:直播地址"`
	common.ControlBy
	models.ModelTime
}
type SysCourseCopy struct {
	CourseId           int     `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	SerialNum          string  `json:"serial_num" comment:"课程编号" gorm:"<-:create"`             // 课程编号
	Subject            string  `json:"subject" comment:"科目"`                                   // 科目
	Province           string  `json:"province" comment:"适用地区"`                                //适用地区
	Name               string  `json:"name" comment:"课程名称"`                                    // 课程名称
	Cover              string  `json:"cover" comment:"封面"`                                     // 封面
	Price              float64 `json:"price" comment:"价格"`                                     // 价格
	Sales              int     `json:"sales" comment:"销量"`                                     // 销量
	Outline            string  `json:"outline" comment:"大纲" vd:"@:len($)>0; msg:'请上传课程大纲'"`    //大纲
	Introduction       string  `json:"introduction" comment:"课程简介"`                            //课程简介
	AuditionLink       string  `json:"audition_link" gorm:"type:varchar(255);comment:试听链接地址"`  //试听链接地址
	AuditionCourseName string  `json:"audition_course_name" comment:"试听课程名称"`
	LecturerId         int     `json:"lecturer_id" comment:"讲师ID"`
	IsBoutique         int     `json:"is_boutique" gorm:"type:tinyint(1)"`
	IsBindOffline      int     `json:"is_bind_offline" gorm:"tinyint(1);default:0;comment:是否关联面授课程"`
	TermOfValidity     int     `json:"term_of_validity" gorm:"smallint(2);comment:网课有效期"`
	//Lecturer         string     `json:"lecturer" comment:"讲师"`
	//LecturerIntr     string  `json:"lecturer_intr" comment:"讲师简介"`     //讲师简介
	OnlineClassId  int              `json:"online_class_id" comment:"网课班级ID"` //网课班级ID
	OnlineClass    string           `json:"online_class" comment:"网课班级"`      //网课班级
	Contacts       string           `json:"contacts" comment:"班主任联系"`         //班主任联系
	Status         int              `json:"status" comment:"状态"`
	CourseWareJson []CourseWareTree `json:"course_ware_json" gorm:"-"`
	Telephone      string           `json:"telephone" comment:"联系电话"`
	PublicRange    string           `json:"public_range" gorm:"type:varchar(11); comment:公开范围"`
	CourseType     string           `json:"course_type" gorm:"type:varchar(50);comment:课程类型，online，live"` //课程类型
	StartTime      string           `json:"start_time" gorm:"datetime;comment:直播开始时间"`
	EndTime        string           `json:"end_time" gorm:"datetime;comment:直播结束时间"`
	LiveUrl        string           `json:"live_url" gorm:"type:varchar(255);comment:直播地址"`
	LiveStatus     string           `json:"live_status" gorm:"type:varchar(255);comment:直播状态"`
	LecturerName   string           `json:"lecturer_name" gorm:"type:varchar(20);comment:教师姓名"`
	LecturerAvatar string           `json:"lecturer_avatar" gorm:"type:varchar(255);comment:头像"`
	common.ControlBy
	models.ModelTime
}

type SysCourseGetDetail struct {
	CourseId       int              `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	Step1          Step1            `json:"step1" gorm:"-"`
	Step2          Step2            `json:"step2" gorm:"-"`
	IsBoutique     int              `json:"is_boutique" gorm:"type:tinyint(1);default:-1;comment:是否设置成精品 1为精品,-1未设置"`
	CourseWareJson []CourseWareTree `json:"course_ware_json" gorm:"-"`
	common.ControlBy
	models.ModelTime
}

type Step1 struct {
	SerialNum          string  `json:"serial_num" comment:"课程编号" `                                   // 课程编号vd:"@:len($)>0; msg:'课程编号不能为空'"
	Subject            string  `json:"subject" comment:"科目" vd:"@:len($)>0; msg:'请选择科目'"`            // 科目
	Name               string  `json:"name" comment:"课程名称" vd:"@:len($)>0; msg:'课程名称不能为空'"`          // 课程名称
	Cover              string  `json:"cover" comment:"封面" vd:"@:len($)>0; msg:'请上传课程封面'"`            // 封面
	Outline            string  `json:"outline" comment:"大纲" vd:"@:len($)>0; msg:'请上传课程大纲'"`          //大纲
	Price              float64 `json:"price" comment:"价格" vd:"$>0; msg:'请填写课程价格'"`                   // 价格
	Introduction       string  `json:"introduction" comment:"课程简介" vd:"@:len($)>0; msg:'请用一句话介绍课程'"` //课程简介
	AuditionLink       string  `json:"audition_link" gorm:"type:varchar(255);comment:试听链接地址"`        //试听链接地址
	AuditionCourseName string  `json:"audition_course_name" comment:"试听课程名称"`
	Status             int     `json:"status" comment:"状态"`
	PublicRange        string  `json:"public_range" comment:"公开范围"`
}

type Step2 struct {
	LecturerId     int    `json:"lecturer_id" comment:"讲师" vd:"$>0; msg:'请选择讲师'"`
	OnlineClassId  int    `json:"online_class_id" comment:"网课班级ID" vd:"$>0; msg:'请选择网课班级ID'"` //网课班级ID
	Contacts       string `json:"contacts" comment:"班主任联系" vd:"@:len($)>0; msg:'请上传班主任二维码'"`  //班主任联系
	Province       string `json:"province" comment:"适用地区" vd:"@:len($)>0; msg:'请选择适用区域'"`     //适用区域
	TermOfValidity int    `json:"term_of_validity" comment:"网课有效期"`
	IsBindOffline  int    `json:"is_bind_offline" comment:"是否面授"`
	Telephone      string `json:"telephone"`
	CourseType     string `json:"course_type"`
	LiveUrl        string `json:"live_url" gorm:"type:varchar(255);comment:直播地址"`
	StartTime      string `json:"start_time" gorm:"datetime;comment:直播开始时间"`
	EndTime        string `json:"end_time" gorm:"datetime;comment:直播结束时间"`
	IsBoutique     int    `json:"is_boutique" comment:"是否设置成精品 1为精品,-1未设置"`
}

func (SysCourse) TableName() string {
	return "sys_course"
}

func (e *SysCourse) Generate() common.ActiveRecord {
	o := *e
	return &o
}

func (e *SysCourse) GetId() interface{} {
	return e.CourseId
}

type CourseList struct {
	CourseId int    `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	Name     string `json:"name"`
}

func (CourseList) TableName() string {
	return "sys_course"
}
